package cn.gok.homework7;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

//定义类Book:int bid,String name,float price
//        除了 全参数构造外，还包含 public void sell(){ //显示本书被卖了}
//private  void sell(float price,String person)://显示本书卖给了xxx，卖了 xxx元
//        通过反射实现：
//        1 获取Book类信息，并获取全属性构造函数对象constructor
//
//        2 利用该构造对象，创建1个书的实例。
//
//        3 通过反射，分别获取两个sell方法对应的method对象，
//        并破坏封装性，分别调用该方法。
public class homework {
    public static void main(String[] args) throws IllegalAccessException, InstantiationException, NoSuchMethodException, ClassNotFoundException, InvocationTargetException {
        Class book = Class.forName("cn.gok.homework7.Book");
        Constructor con = book.getConstructor(int.class,String.class,float.class);
        Book book1 = (Book) con.newInstance(1,"s",50F);
        System.out.println(book1);

        Method m = book.getDeclaredMethod("sell",null);
        m.setAccessible(true);
        m.invoke(book1,null);
        Method m1 = book.getDeclaredMethod("sell",float.class,String.class);
        m1.setAccessible(true);
        m1.invoke(book1,50f,"jsx");
    }
    }